/**
 * Created by hjqi on 2016/2/12.
 */

var base = require('./gitBase');
var util = require('util');
module.exports = github;

function github(){

    this._getUserUrl = 'https://api.github.com/user';
    this._authorizationHeader = {'Authorization':'bearer '};
    base.call(this);

}

github.prototype._parseUserInfo = function(userInfo){
    var _infoObj = JSON.parse(userInfo);
    var _retObj = {};
    _retObj.repoUrl = _infoObj.repos_url;
    return _retObj;
}

github.prototype._parseTagInfo = function(tagInfo){
    var _infoObj = JSON.parse(tagInfo);
    var _retlst = [];
    _infoObj.forEach(function(item){
        _retlst.push(item.name);
    });
    return _retlst;
}

github.prototype._getTagUrl = function(full_name){
    return 'https://api.github.com/repos/'+full_name+'/tags';
}

github.prototype._parseRepoItem = function(repoItem){
    var _retObj = {};
    //_retObj.id = repoItem.owner.login;
    _retObj.name = repoItem.name;
    _retObj.full_name = repoItem.full_name;
    _retObj.description = repoItem.description;
    _retObj.git_url = repoItem.git_url;
    _retObj.ssh_url = repoItem.ssh_url;
    _retObj.clone_url = repoItem.clone_url;
    _retObj.tags_url = repoItem.tags_url;
    _retObj.private = repoItem.private;
    _retObj.type = 'github';
    return _retObj;
}

github.prototype._processErr = function(result){
    var _ret = {};
    try{
        var _err_json = JSON.parse(result);
        if(_err_json.message !== undefined){
            if(_err_json.message.indexOf('Bad credentials') !== -1){
                _ret.code = 401;
                _ret.msg = 'token error';
            }
        }else{
            _ret.code = 400;
            _ret.msg = result;
        }
    }catch(e){
        _ret.code = 400;
        _ret.msg = result;
    }

    return _ret;
}

util.inherits(github,base);